<?php

namespace app\admin\controller;

use think\Db;
use think\Request;


class Role extends Admin
{

    // 角色列表,查询数据
    public function index()
    {   
        $sql = DB::table('role')
                ->select();

        $data = Db::table('role')
        		// 查询角色权限表,角色ID = 角色权限表的role_id
                ->join('role_access ra','r.id = ra.role_id')
                // 查询权限表,角色权限表权限ID=权限表的ID
                ->join('access a','ra.access_id = a.id')
                ->alias('r')
                ->field('r.id, a.title,a.controll,a.func')
                ->select();



        foreach($data as $v){

            foreach($sql as &$title){

                if(empty($title['title'])){

                    $title['title'] = null;
                }

                if($v['id'] == $title['id']){

                    $title['title'] .= $v['title'] . ' ';

                }
            }

        }

        return view('admin@role/roleList',['data' => $sql]);
    }


    // 跳转添加数据页面
    public function add()
    {
        return view('admin@role/addrole');
    }

    // 保存数据
    public function save(Request $req)
    {

        // 接收数据
        $data = $req->get();


        // 执行sql
        $result = Db::table('role')->data($data)->insert();

        // 返回结果
        if ($result > 0) {

             return $this->success('添加成功..', url('admin/Role/index'));

        } else {

             return $this->error('添加失败,请重试...');

        }


        // return view('admin@con1/func2');
    }


    // 查询语句(修改查询)
    public function find($id)
    {

        // 查询
        $data = Db::table('role')->find($id);

        // 跳转
        return view('admin@role/edit', ['data' => $data]);

    }


    // 修改管理员资料
    public function updata(Request $request)
    {
        
        // 接收数据
        $data = $request->get();
        // var_dump($data);die;

        // 获取id
        $id = $request->get('id');

        // 执行sql语句
        $result = Db::table('role')->where('id', $id)->update($data);

        // 返回
       if ($result > 0) {

           return $this->success('保存成功..', url('admin/Role/index'));

       } else {

           return $this->error('保存失败,请重试...');

       }
    }



    // 跳转分配权限页面
    public function access($id)
    {   

        // 查询角色数据
        $data = DB::table('access')
                ->field(['create_time'],true)
                ->select();
                
        // var_dump($id);

        // var_dump($data);die;

        // 跳转
        return view('admin@role/access',['data' => $data,'rid' => $id]);


    }   




     // 提交分配角色
    public function doAccess(Request $request)
    {   

        // 接收数据
        $data = $request->post();
        // var_dump($data);die;
        $rid = $data['rid'];
        $aid = $data['access_id'];

        // 删除数据
        $res = Db::table('role_access')->where($rid.' = role_id')->delete();

        if (!empty($aid)) {

            foreach ($aid as $v) {

                $data = [
                    'access_id' => $v, 
                    'role_id' => $rid, 
                ];

            //插入数据
            $res = DB::table('role_access') ->data($data)->insert();

            }
        }


        // 返回结果
        if ($res > 0) {

             return $this->success('权限已分配!', url('admin/Role/index'));

        } else {

             return $this->error('权限分配失败,请重试...');

        }

    }



    // 角色删除
    public function del_role()
    {
        $id = input('id');

        // 删除角色权限表的指定数据
        $res = Db::table('user_role')->where('role_id ='.$id)->delete();

        // 删除角色
        $res = Db::table('role')->where('id ='.$id)->delete();

        // 返回结果
        if ($res > 0) {

             return $this->success($res, url('admin/User/index'));

        } else {

             return $this->error($res);

        }

    }

}


